package com.cl.utility.security;

import com.cl.utility.pojo.Student;

/**
 * @author liddhappy
 * @description
 * @createTime 2022/11/26 8:50
 */
public class StudentThreadLocal {
    private static final ThreadLocal<Student> LOCAL = new ThreadLocal<Student>();

    /**
     * `TokenInterceptor`类中实现了`HandlerInterceptor`拦截器，对请求进行了拦截
     * 并对token进行了校验，token有效就会把`student`数据信息存储到当前类中
     * 通过调用该类的`get()`方法时，即可获取到`student`的数据信息
     */

    //构造方法私有化,不运行外部实例化该对象
    private StudentThreadLocal() {
    }

    /**
     * 向本地线程中添加数据
     *
     * @param student
     */
    public static void set(Student student) {
        LOCAL.set(student);
    }

    /**
     * 获取本地线程中的数据
     *
     * @return
     */
    public static Student get() {
        return LOCAL.get();
    }

    /**
     * 移除本地线程中的数据
     */
    public static void remove() {
        LOCAL.remove();
    }
}

